/**
 * Created by apple on 2017/7/5.
 */

var express = require('express');
var router = express.Router();

var UserToken = require('../db/user_tokens.js');
var SrvLinkRouter = module.exports;
var SrvLinkDao = require('../dao/srv_link.js');


/**
 * 根据account拿token（目前是用于usuz连接）
 * account,app_sign,app_key
 */
SrvLinkRouter.getUsuzToken = function (req, res) {
    var par = paramAll(req);

    if (!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if (!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if (!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    if (!par.code) {
        res.json(new ERR('访问受限', 400));
        return;
    }
    par.uid = codeToUid(par.code);
    SrvLinkDao.getAccountWithUid(par,function (err,result) {
        if (err) return res.json(new ERR(err, 400));
        if (result) par.account = result.account;
        UserToken.acc2uToken(par,function (e,r) {
            if(e){
                console.log(e);
                res.json(new ERR(e, 400));
                return;
            }
            res.json(new PKG(r));
        });
    });
}
router.post('/getUsuzToken', SrvLinkRouter.getUsuzToken);

/**
 * 商品上传或更新时，修改财富积分（目前是用于跑单连接）
 * uid,pictUrl,goodShortTitle,app_sign,app_key
 */
SrvLinkRouter.publishGoodsByPD = function (req, res) {
    var par = paramAll(req);

    if (!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if (!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if (!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    if (!par.uid) {
        res.json(new ERR('用户标识不为空', 400));
        return;
    }

    if (!par.hasOwnProperty('isNotFirstPublish')) {
        res.json(new ERR('isNotFirstPublish不能为空', 400));
        return;
    }

    if (!par.goodShortTitle) {
        res.json(new ERR('商品短标题为空', 400));
        return;
    }

    if (!par.pictUrl) {
        res.json(new ERR('商品主图为空', 400));
        return;
    }

    //积分变更原因
    // if(!par.comment){
    //     res.json(new ERR('comment为空', 400));
    //     return;
    // }

    // if(!par.vip_sid){
    //     res.json(new ERR('权限标识不为空', 400));
    //     return;
    // }
    // if(!par.point){
    //     res.json(new ERR('数值不为空', 400));
    //     return;
    // }
    // if(!par.sign){
    //     res.json(new ERR('标识不为空', 400));
    //     return;
    // }

    SrvLinkDao.publishGoodsByPD(par, function (e, result) {
        if (e) {
            res.json(new ERR(e, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/publishGoodsByPD', SrvLinkRouter.publishGoodsByPD);

/**
 * (已弃用)
 * 管理员审核商品结束，添加信用积分（目前是用于跑单连接）
 *
 */
SrvLinkRouter.checkGoodsByPD = function (req, res) {
    var par = paramAll(req);

    if (!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if (!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if (!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    var param = {};

    if (!par.goods) {
        res.json(new ERR('商品列表不为空', 400));
        return;
    } else {
        param.goods = JSON.parse(par.goods);
    }

    if (!par.hasOwnProperty('sign')) {
        res.json(new ERR('sign不为空', 400));
        return;
    } else {
        param.sign = par.sign;
    }

    if(!par.vfy_date){
        res.json(new ERR("vfy_date is null",400));
        return;
    }else{
        param.vfy_date = par.vfy_date;
    }

    param.vip_sid = 'creditLvl';
    param.app_sid = par.app_key;
    //已弃用
    SrvLinkDao.alterLvl(param, function (e, result) {
        if (e) {
            res.json(new ERR(e, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/checkGoodsByPD', SrvLinkRouter.checkGoodsByPD);

/**
 * 管理员审核商品结束，添加和扣除信用积分（目前是用于跑单连接）
 */
SrvLinkRouter.auditGoodsByPD = function (req, res) {
    var par = paramAll(req);

    if (!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if (!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if (!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    var param = {};

    if (!par.passEasyGoods && !par.refuseEasyGoods) {
        res.json(new ERR('商品列表不为空', 400));
        return;
    }
    if (!par.vfy_date) {
        res.json(new ERR('vfy_date is null', 400));
        return;
    }else {
        param.vfy_date = par.vfy_date;
    }
    if(par.passEasyGoods){
        param.passEasyGoods =  par.passEasyGoods;
    }
    if(par.refuseEasyGoods){
        param.refuseEasyGoods =  par.refuseEasyGoods;
    }
    if(par.handleGoods) {
        param.handleGoods = par.handleGoods;
    }
    if(!par.blpd_APP_key && !par.blpd_APP_secret && !par.TaoSrvHost){
        res.json(new ERR("奔流跑单签名参数没传",400));
        return;
    }else {
        param.blpd_APP_key = par.blpd_APP_key;
        param.blpd_APP_secret = par.blpd_APP_secret;
        param.TaoSrvHost = par.TaoSrvHost;
    }

    param.vip_sid = 'creditLvl';
    param.app_sid = par.app_key;
    SrvLinkDao.alterLvlByAuditGoods(param, function (e, result) {
        if (e) {
            res.json(new ERR(e, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/auditGoodsByPD', SrvLinkRouter.auditGoodsByPD);

/**
 * /srvLink/rePassGoodByPD
 * 管理员已拒绝，又给商品通过（返还积分，删除vipLog记录，+1信用积分）（目前是用于跑单连接）
 */
SrvLinkRouter.rePassGoodByPD = function (req, res) {
    var par = paramAll(req);

    if (!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if (!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if (!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    var param = {};

    if (!par.rePassGood) {
        res.json(new ERR('要再通过的商品不为空', 400));
        return;
    }else {
        param.rePassGood =  par.rePassGood;
    }
    if(!par.hasOwnProperty("isShelf")){
        res.json(new ERR('是否上架奔流参数不为空', 400));
        return;
    }else {
        param.isShelf = par.isShelf;
    }
    if(!par.vfy_date){
        res.json(new ERR("重新审核的时间不为空",400));
        return;
    }else {
        param.vfy_date = par.vfy_date;
    }
    if(!par.blpd_APP_key && !par.blpd_APP_secret && !par.TaoSrvHost){
        res.json(new ERR("奔流跑单签名参数没传",400));
        return;
    }else {
        param.blpd_APP_key = par.blpd_APP_key;
        param.blpd_APP_secret = par.blpd_APP_secret;
        param.TaoSrvHost = par.TaoSrvHost;
    }

    param.vip_sid = 'creditLvl';
    param.app_sid = par.app_key;
    SrvLinkDao.alterLvlByRePassGood(param, function (e, result) {
        if (e) {
            res.json(new ERR(e, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/rePassGoodByPD', SrvLinkRouter.rePassGoodByPD);

/**
 * 跑单连接
 * uid，app_sid, vip_sid, point,account,sign(0:增加 1减少),exInfo(选),comment(选)
 */
SrvLinkRouter.alterPoints = function (req, res) {
    var par = paramAll(req);

    if (!checkSrvConnection(par)) return res.json(new ERR('无访问权限', 400));

    if (!par.uid) {
        res.json(new ERR('用户标识不为空', 400));
        return;
    }
    if (!par.appSid) {
        res.json(new ERR('产品标识不为空', 400));
        return;
    }
    if (!par.vipSid) {
        res.json(new ERR('权限标识不为空', 400));
        return;
    }
    if (!par.point) {
        res.json(new ERR('数值不为空', 400));
        return;
    }
    if (!par.sign) {
        res.json(new ERR('标识不为空', 400));
        return;
    }
    SrvLinkDao.alterPoints(par, function (e, result) {
        if (e) {
            res.json(new ERR(e, 400));
            return;
        }
        res.json(new PKG(result));
    });
}
router.post('/alterPoints', SrvLinkRouter.alterPoints);


//创建跑单信用积分接口     把vip权限写死 比较保险？ 不会被乱掉接口更改？
SrvLinkRouter.creditScore = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }
    UserToken.checkLogin(par.token, function (err, userInfo) {

        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!userInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        SrvLinkDao.creditScore(userInfo, function (err, result) {

            if (err) {
                res.json(new ERR(err, 403));
                return;
            }

            res.json(new PKG(result));

        });

    });
}
router.post('/creditScore', SrvLinkRouter.creditScore);


module.exports = router;